/**
 * 数据库的基类,其他仓库继承该类
 */

const db = require('../db'); //引入数据库连接池

class BaseRepository { 
    constructor(table) {
        this.table = table; //将表名赋值给this.table
        this.db = db; //将数据库连接池赋值给this.db
    }

    // 通用查询所有的方法
    async findAll() {
        console.log(`开始查询所有数据:SELECT * FROM ${this.table}`);
        const [rows] = await this.db.query(`SELECT * FROM ${this.table}`);
        console.log(`查询所有数据成功:${rows.length}条`);
        return rows;
    }

    // 通用通过id查询的方法
    async findById(id) {
        console.log(`查询用户id为:${id}`);
        const [rows] = await this.db.query(`SELECT * FROM ${this.table} WHERE id = ?`, [id]);
        console.log(`查询用户id为:${id}成功`);
        return rows[0];
    }

    // 通用通过id删除的方法
    async deleteById(id) {
        const [rows] = await this.db.query(`DELETE FROM ${this.table} WHERE id = ?`, [id]);
        return rows[0];
    }   

    // .... 其他通用方法,根据需要添加

}

module.exports = BaseRepository; 